1. Field
The present embodiments are generally related to aggregation of data using a hash table for an online analytical processing (OLAP) database query of an in-memory database system.
2. Background Art
Databases configured for OLAP rely heavily on aggregation, which is ripe for optimization. Meanwhile, the demand for database volume and database speed continues to grow. As databases continue to grow in size they present numerous challenges related to quickly and efficiently performing real-time queries of terabytes (TBs) of data. Aggregation represents a large and important part of such queries.
As databases grow in size, modem hardware continues to grow more powerful and include increasingly more processors with multiple cores. For example, affordable computing devices include two to eight processors each having four to eight cores, each core having two or four hardware contexts. Each core includes one or two levels of primary caches and many processors include features which increase performance such as pipelining, instruction level parallelism, branch prediction and features for synchronization.
Extremely powerful computing devices may be outfitted with several hundred gigabytes (GB) of RAM or even a few TB of RAM. Such advances in hardware have allowed for in-memory database systems. Thus, entire database systems may now be processed and stored in RAM.
Aggregation may be performed in these very large in-memory database systems using modem hardware with a plurality of processors each processor having a plurality of cores executing in parallel. Conventional aggregation techniques struggle with challenges including synchronization, cache utilization, non-uniform access characteristics (NUMA), a plurality of database columns, data skew and operator selection of an optimal aggregation operator by an optimizer.